Latest post is a big one: "Why you shouldn't invoke setup.py directly"
A lot of people don't know about this because we haven't been great about getting the word out. This blog post is in part an attempt to remedy this.
Please help spread the word!
https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html
From the archives of my blog but still very relevant: "pytz: The Fastest Footgun in the West", about why you probably shouldn't be using pytz:
https://blog.ganssle.io/articles/2018/03/pytz-fastest-footgun.html
Today's important question: Who the fuck uses autotools to build a pure #Python package in 2025?
https://github.com/brailcom/speechd/tree/master/src/api/python
@pythonbytes @mkennedy
Hi! Re: https://www.youtube.com/live/yve8JFJTyNA&t=120
The stdlib does know what .txt and .html is, scroll down 60 lines and you'll see a mapping of 170 extensions to 116 MIME types:
https://github.com/python/cpython/blob/cdcacec79f7a216c3c988baa4dc31ce4e76c97ac/Lib/mimetypes.py#L463
>>> import mimetypes
>>> mimetypes.guess_file_type("my.txt")
('text/plain', None)
>>> mimetypes.guess_file_type("my.html")
('text/html', None)
The stdlib checks the OS database first, otherwise it uses the default mapping.
As someone who has been hoarding pebbles for some time now, I am very excited by this new development: https://repebble.com/
If it has an always on screen and physical buttons on the side, I'm in!
If your program is leaking memory (or CUDA memory, or file descriptors, or really any limited resource), one way to identify the problem is to use your test suite to identify specific problem APIs. I demonstrate this using pytest fixtures:
https://pythonspeed.com/articles/identifying-resource-leaks-with-pytest/
Is there a good library out there in Python that provides a simple abstraction over the major LLM providers, such that it's easy for me to swap out which one I'm using for a given project?
I find myself writing my own version of this because each of the LLMs have strengths and weaknesses, and sometimes for a project I want to test them all out before committing to use a specific one.
A few months back I looked at @simon's `llm`, but from what I could tell it was mostly wrapping ChatGPT or compatible APIs, and I wasn't sure how to use it for everything.
¿Me podrían recomendar blogs, glosarios u otros recursos con terminología tecnológica en español? Quiero aprender a comunicar conceptos sobre programación, redes, seguridad, "open source", "dev ops", accesibilidad, etcétera.
Can anyone recommend blogs, glossaries and other resources with technological terminology in Spanish? I want to learn to communicate about concepts in programming, networking, security, open source, dev ops, accessibility, etc.
I was explaining retirement to my son today and he said, "Oh, I might not ever have to work."
"Why not?"
"I am going to ask Santa for $2M this year. Then I'll be able to retire."
"Hmm.. I have never heard of Santa giving anyone enough money to retire on, to be honest. And $2M might not be enough..."
I noticed that he and my wife made the list today and he has now upped the request to $2B. Go big or go home, I guess.
Man my package has been stuck at a UPS facility in Koeln, Germany for 10 days now, apparently this is a very common theme: https://www.reddit.com/r/UPS/comments/1f969dw/more_delay_experiences_cologne_koeln_germany/
And from older threads, it seems like it has been like this for years (I dunno if it is constant or intermittent).
I wonder if this is just a dysfunctional facility or if stuff gets stuck there because everything goes there before coming to the US and the problem is getting stuff from Europe to the US in general...
Just released: humanize 4.11.0
https://github.com/python-humanize/humanize/releases/tag/4.11.0
This adds a new API:
>>> natural_list(["egg", "sausage", "beans"])
'egg, sausage and beans'
>>> natural_list(["egg", "sausage"])
'egg and sausage'
>>> natural_list(["egg"])
'egg'
Adds the newest ronna and quetta SI prefixes: https://www.npl.co.uk/si-prefix
Drops support for Python 3.8,
fixes rollover from ZB to 1.0 YB, fixes French & Chinese translations & finding location of translations, & improves import times.
I've been conducting more interviews lately, some of which involve traversing a tree / graph, and I am kind of surprised to find that uniformly everyone does these traversals with recursion. I'm not surprised to find that it's popular (I think it's often taught as an example of something where recursion is appropriate), but I personally almost never use recursion (especially in Python).
I think the main reasons I almost always avoid recursion (both in interviews and in practice) are:
1. I prefer to be very explicit about the resources I am using. It's easy to not realize how much overhead you are storing in the frame stack, whereas when you have an explicit stack or queue of nodes, it's quite easy to see what you are storing and passing up and down the stack.
2. No running into recursion limits (mostly Python specific thing).
3. It's pretty easy to switch between depth and breadth first searches by changing from a stack to a queue and vice-versa, whereas if you change your mind and decide you need to do BFS when you've written a recursive traversal, you have to rip everything out and start over.
4. When I need access to some resources outside of the traversal (either to modify them or for some other reason), it seems cleaner to use a variable that is already in scope rather than a closure (though maybe that's a dubious distinction).
Looking at this list, I do think that (other than the recursion limit thing), this is mostly just a bias against recursive functions. I think the primary benefit of a recursive function is that I think it's easier to pivot to a concurrent traversal by spawning multiple child nodes and letting the stack handle your resolution order for you.
Para los que tienen el español como lengua materna, ¿le encuentran sentido a este chiste malo de papá sin necesidad de traducirlo al inglés?
https://youtu.be/CpcWbwwLHkg?si=d_W8MlFTy0p0fKjB&t=269
(4m29s si el enlace no te lleva directamente al momento exacto)
Programmer working at Google. Python core developer and general FOSS contributor. I also post some parenting content.